package org.lab.jiang.filter;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.shirdrn.document.preprocessing.api.Term;
import org.shirdrn.document.preprocessing.api.TermFilter;



public class StopwordsTermFilter implements TermFilter {

	private static final Log LOG = LogFactory.getLog(StopwordsTermFilter.class);
	private String charSet = "UTF-8";
	private static final Set<String> STOP_WORDS = new HashSet<String>();
	private static final AtomicBoolean isLoaded = new AtomicBoolean(false);
	
	public StopwordsTermFilter() {
		// set charset
//		String charSet = context.getConfiguration().get(ConfigKeys.DATASET_FILE_CHARSET);
//		if(charSet != null) {
//			this.charSet = charSet;
//		}
//		// try to load stop words
//		if(isLoaded.compareAndSet(false, true)) {
//			// stop words
//			String stopWordsDir = context.getConfiguration().get(ConfigKeys.DOCUMENT_ANALYZER_STOPWORDS_PATH);
//			if(stopWordsDir != null) {
//				File dir = new File(stopWordsDir);
//				File[] files = dir.listFiles(new FileFilter() {
//
//					public boolean accept(File file) {
//						if(file.isFile()) {
//							return true;
//						}
//						return false;
//					}
//					
//				});
//				for(File file : files) {
//					try {
//						load(file);
//					} catch (Exception e) {
//						LOG.warn("Fail to load stop words: file=" + file, e);
//					}
//				}
//			}
//		}
	}



	/**
	 * @Param
	 * @Author zhangzhidong
	 */
	
	public void filter(Map<String, Term> terms) {
		// TODO Auto-generated method stub
		
	}
	
//	public void filter(Map<String, Term> terms) {
//		Iterator<Entry<String, Term>> iter = terms.entrySet().iterator();
//		while(iter.hasNext()) {
//			Entry<String, Term> entry = iter.next();
//			if(STOP_WORDS.contains(entry.getValue().getWord())) {
//				iter.remove();
//			}
//		}
//	}
//
//	private void load(File file) {
//		BufferedReader reader = null;
//		try {
//			reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charSet));
//			String word = null;
//			while((word = reader.readLine()) != null) {
//				word = word.trim();
//				if(!word.isEmpty()) {
//					if(!STOP_WORDS.contains(word)) {
//						STOP_WORDS.add(word);
//					}
//				}
//			}
//		} catch (FileNotFoundException e) {
//			e.printStackTrace();
//		}  catch (IOException e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				reader.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}		
//	}

}
